
boolean flag[2];
flag[0] = FALSE;
flag[1] = FALSE;
int turn = 0;

void P0() {     // 进程 P0
    while (TRUE) {
        flag[0] = TRUE;
        trun = 1;
        while (flag[1] && (turn == 1));
        临界区;
        flag[0] = FALSE;
    }
}


void P1() {     // 进程 P1
    while (TRUE) {
        flag[1] = TRUE;
        trun = 0;
        while (flag[0] && (turn == 0));
        临界区;
        flag[1] = FALSE;
    }
}

